package com.cskaoyan.javase.oop2._1extends._0introduction._1new;

/**
 * 使用继承改造
 *
 * Java中的继承语法,指的是在定义一个类的时候,让该类指定继承某个类的成员
 * 语法:
 * [访问权限修饰符] class 类名 extends 被继承的类/已经存在的某个类{
 *     // 类体
 * }
 * 解释:
 *      1.extends关键字表示继承
 *      2."被继承的类/已经存在的某个类"称之为"父类"
 *      3.继承父类的类就是子类
 *      4.通过继承,子类会得到父类中的所有成员,包括:
 *          成员变量,成员方法
 *            注意:
 *              静态成员先不考虑
 *              构造器也不考虑
 *      5.通过继承,就实现了对父类成员的复用
 *      6.子类在继承父类成员的同时,还可以自定义自身成员,这就是"子类在父类的基础上,扩展了父类"
 *      所以继承使用扩展(extends)关键字
 *      所以继承中子类往往要比父类功能更加强大
 *          至少不会更弱
 *          这叫"青出于蓝而胜于蓝"
 *
 *
 * @since 17:36
 * @author wuguidong@cskaoyan.onaliyun.com
 */
public class Demo {
    public static void main(String[] args) {
        Student s = new Student();
        System.out.println(s.name);
        s.eat();
        Teacher t = new Teacher();
        t.eat();
        System.out.println(t.name);
    }
}
// 作为父类,它的成员会被复用
class Person {
    String name;

    public void eat() {
        System.out.println("人都要吃饭,不吃饭和难受~");
    }
}

class Teacher extends Person {
    int staffId;
    public void teach() {
        System.out.println("老师在念催眠曲,大家睡的都很好~");
    }
}

class Student extends Person{
    int stuId;
    public void study() {
        System.out.println("我决定今晚去召唤师峡谷学习~~");
    }
}